const Article = require('../models/Article');

exports.getAllArticles = async (req, res) => {
  try {
    const articles = await Article.getAll();
    // 成功响应，设置状态码 200，返回包含 data、code 和 message 的对象
    res.json({
      status: 200,
      msg: '获取所有文章成功',
      data: articles
    });
  } catch (error) {
    // 失败响应，设置状态码 500，返回包含 code 和 message 的对象
    res.status(500).json({
      status: 500,
      msg: error.message,
      data: null
    });
  }
};

exports.getArticleById = async (req, res) => {
  try {
    const article = await Article.getById(req.params.id);
    if (!article) {
      // 文章未找到，设置状态码 404，返回包含 code 和 message 的对象
      return res.status(404).json({
        status: 404,
        msg: '文章未找到',
        data: null
      });
    }
    // 成功响应，设置状态码 200，返回包含 data、code 和 message 的对象
    res.json({
      status: 200,
      msg: '获取文章成功',
      data: article
    });
  } catch (error) {
    // 失败响应，设置状态码 500，返回包含 code 和 message 的对象
    res.status(500).json({
      status: 500,
      msg: error.message,
      data: null
    });
  }
};

exports.createArticle = async (req, res) => {
  console.log('Received request body:', req.body);
  try {
    const { title, content, author_id, category_id, status, published_at } = req.body;
    
    // 调用 Article 模型中的 create 方法
    const articleId = await Article.create(title, content, author_id, category_id, status, published_at);

    // 返回成功响应，状态码 201（Created）和新文章的 ID
    res.status(201).json({
      status: 201,
      msg: '文章创建成功',
      data: { id: articleId }
    });
  } catch (error) {
    // 失败响应，设置状态码 500，返回包含 code 和 message 的对象
    res.status(500).json({
      status: 500,
      msg: error.message,
      data: null
    });
  }
};